﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ModeloMagiPack.Entidades;
using DALMagiPack.Funcionalidad;

namespace BLLMagiPack.Managers
{
    public class BLLVendedor: BLLMagiPack
    {
        public void CrearVendedor(Vendedor nuevoVendedor)
        {
            DALMagiPack<Vendedor> dal = new DALMagiPack<Vendedor>();
            dal.Insertar(nuevoVendedor);
        }

        public void ModificarVendedor(Vendedor vendedor)
        {
            DALMagiPack<Vendedor> dal = new DALMagiPack<Vendedor>();
            dal.Modificar(vendedor);
        }

        public void EliminarVendedor(Vendedor vendedor)
        {
            List<string> elementos = new List<string>();

            if (new BLLCliente().PoseeClientesPorVendedor((int)vendedor.IdVendedor))
                elementos.Add("clientes");
            if (new BLLOrden().PoseeOrdenesPorVendedor((int)vendedor.IdVendedor))
                elementos.Add("ordenes");
            ValidarDependencia(elementos, "vendedor", vendedor.Nombre, true);

            DALMagiPack<Vendedor> dal = new DALMagiPack<Vendedor>();
            dal.Eliminar(vendedor);
        }

        public List<Vendedor> TraerVendedores()
        {
            DALMagiPack<Vendedor> dal = new DALMagiPack<Vendedor>();

            return dal.Traer(new Vendedor(), new List<Filtro>()).OrderBy(v => v.Nombre).ToList();
        }

        public List<Vendedor> TraerVendedores(string nombre)
        {
            DALMagiPack<Vendedor> dal = new DALMagiPack<Vendedor>();
            Vendedor parametrosFiltro = new Vendedor();
            List<Filtro> filtros = new List<Filtro>(); 

            if (nombre.Length > 0)
            {
                parametrosFiltro.Nombre = nombre;
                filtros.Add(new Filtro() { Columna = NombresColumnas.Nombre, Tipo = TipoFiltro.Like });
            }

            return dal.Traer(parametrosFiltro, filtros).OrderBy(v => v.Nombre).ToList();
        }

        public Vendedor TraerVendedor(int? idVendedor)
        {
            DALMagiPack<Vendedor> dalVendedor = new DALMagiPack<Vendedor>();
            List<Filtro> opciones = new List<Filtro>() { new Filtro() { Columna = NombresColumnas.IdVendedor, Tipo = TipoFiltro.Equal } };

            return dalVendedor.Traer(new Vendedor() { IdVendedor = idVendedor }, opciones).FirstOrDefault();
        }
    }
}
